package pe.com.bbva.pct.dao.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Query;

import org.springframework.stereotype.Repository;

import pe.com.bbva.pct.dao.ReglaFuenteDAO;
import pe.com.bbva.pct.domain.ReglaFuente;
import pe.com.bbva.pct.util.ConstantesGenerales;

@Repository("reglaFuenteDao")
public class ReglaFuenteDAOImpl extends GeneralDAOImpl<ReglaFuente> implements ReglaFuenteDAO{

	@SuppressWarnings("unchecked")
	@Override
	public List<ReglaFuente> obtenerReglaFuente(Long idRegla) throws Exception{
		List<ReglaFuente> listaReglaFuente = new ArrayList<ReglaFuente>();
		try {
			
			StringBuilder queryString = new StringBuilder();
			queryString.append("SELECT p FROM ReglaFuente p WHERE  p.idRegla.idRegla = :pIdRegla AND p.idEstado.idValor <> " + ConstantesGenerales.VALOR_ELIMINADO);
			Query query = em.createQuery(queryString.toString());
			query.setParameter("pIdRegla", idRegla);
			listaReglaFuente = query.getResultList();

		} catch (Exception e) {
			e.printStackTrace();
		}
		return listaReglaFuente;
	}
	
	
	public List<ReglaFuente> obtenerReglasPorFuente(Long idFuente) throws Exception{
	List<ReglaFuente> listaReglaFuente = new ArrayList<ReglaFuente>();
	try {
		
		StringBuilder queryString = new StringBuilder();
		queryString.append("SELECT p FROM ReglaFuente p WHERE  p.idFuente.idFuente = :pIdFuente AND p.idEstado.idValor = " + ConstantesGenerales.EST_ACTIVO_VALOR_LISTADO);
		Query query = em.createQuery(queryString.toString());
		query.setParameter("pIdFuente", idFuente);
		listaReglaFuente = query.getResultList();

	} catch (Exception e) {
		e.printStackTrace();
	}
	return listaReglaFuente;
	}
	
	
	public List<ReglaFuente> obtenerReglasFuenteEntrada(Long idRegla) throws Exception{
		List<ReglaFuente> listaReglaFuente = new ArrayList<ReglaFuente>();
		try {
			
			StringBuilder queryString = new StringBuilder();
			queryString.append("SELECT p FROM ReglaFuente p WHERE   p.idRegla.idRegla = " +
					":pIdRegla AND p.idEstado.idValor = " + ConstantesGenerales.EST_ACTIVO_VALOR_LISTADO +
					" AND p.idTipoFuente.idValor = " + ConstantesGenerales.TIPO_FUENTE_ENTRADA);
			Query query = em.createQuery(queryString.toString());
			query.setParameter("pIdRegla", idRegla);
			listaReglaFuente = query.getResultList();

		} catch (Exception e) {
			e.printStackTrace();
		}
		return listaReglaFuente;
	}
}
